/*
	KeyWordNode.h

	define CKeyWordNode class 

	@author Woflhead
*/

#pragma once

#ifndef _KEYWORD_NODE_H_
#define _KEYWORD_NODE_H_

#include "wfx.h"
#include <map>
using namespace std;

MAKE_PTR(CKeyWordNode);

class CKeyWordNode
{
public:
	static CKeyWordNodePtr create()
	{
		return CKeyWordNodePtr(new CKeyWordNode());
	}

public:
	CKeyWordNode():m_bAccept(false),m_type(0){}
	~CKeyWordNode(){}

	void SetAccept(bool accept){m_bAccept = accept;}
	bool GetAccept(){return m_bAccept;}

	void SetType(int Type){m_type = Type;}
	int GetType(){return m_type;}

	CKeyWordNodePtr GetNode(char ch)
	{
		map<char, CKeyWordNodePtr>::iterator it = m_KeyMap.find(ch);
		if (it != m_KeyMap.end())
		{
			return it->second;
		}

		return CKeyWordNodePtr();
	}

	void AddNode(char ch, CKeyWordNodePtr pNode)
	{
		m_KeyMap[ch] = pNode;
	}

public:
	map<char, CKeyWordNodePtr> m_KeyMap;
	bool m_bAccept;
	int m_type;
};

#endif // #ifndef _KEYWORD_NODE_H_